package lock8;

import java.util.concurrent.TimeUnit;

/**
 * 8锁
 * 3。当有一个方法中有 一个hello方法 A执行 phone.sendMs(); B执行 phone.hello() 先执行a还是b   todo 是先执行b 因为b不是同步方法 会在执行后等一秒先输出
 * 4. 当有两个phone对象  p1 执行 phone1.sendMs();    p2 执行  phone2.call();  先执行a还是b  todo 因为他们是两个调用者 之间的锁的是调用者锁 不是一个调用者 所以互不影响 就会先输出 打电话在输出发送短信
 */
public class Test2 {

    public static void main(String[] args) {
        phone phone1 = new phone();
        phone phone2 = new phone();
        new Thread(()->{
            phone1.sendMs();
        },"A").start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        new Thread(()->{
            phone2.call();
        },"B").start();
    }



}
//class phone{
//
//
//    public synchronized void sendMs(){
//        try {
//            TimeUnit.SECONDS.sleep(4);
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
//        System.out.println("发送短信 ！！！");
//    }
//
//
//    public synchronized void call(){
//        System.out.println("打电话 !!!");
//    }
//
//    public void hello(){
//        System.out.println("hello");
//    }
//}
